
"""
kwargs 使用
kwargs 是 keyword arguments 的缩写，主要用在函数定义中收集所有未被显示命名
的关键字参数；在函数内部，kwargs 是一个字典，其中包含了所有传递进来的关键字参数及其对应的值

"""

def kwargs_function(**kwargs):
    ## 获取 key
    print("===========key============")
    for key in kwargs.keys():
        print(f"{key}")
    
    ## 获取 value
    print("==========value===========")
    for value in kwargs.values():
        print(f"{value}")


    ## 遍历获取字典的 key 和 value
    print("=======key=value==========")
    for key, value in kwargs.items():
        print(f"{key} = {value}")

def kwargs_default(**kwargs):
    ## 获取指定 key 的值，如果key不存在，则返回默认值
    name = kwargs.get("name", "Guest")
    print(f"Hello {name}")

def kwargs_pop(**kwargs):
    ## 移除并返回指定键的值，如果键不存在，则返回默认值
    debug_mode = kwargs.pop("debug", False)

    print(f"Debug mode is {debug_mode}")
    for key, value in kwargs.items():
        print(f"{key} = {value}")

def kwargs_update(**kwargs):
    default_settings = {"color":"red", "size":100}
    default_settings.update(kwargs)

    print(default_settings)

if __name__ == "__main__":
    kwargs_function(name="xiaoming", age=18, gender="man")

    kwargs_default()

    kwargs_default(name="Liming")

    kwargs_pop(database="mysql", port=8080)


    kwargs_update(color="green", sharp="circle")